package com.guaoran.interview.in2018.collection;


import java.util.*;

/**
 * @author : guCheng
 * @title : ListAndSetAndQueue 
 * @Description : 
 * 	 集合类：List和Set比较，各自的子类比较（ArrayList，Vector，LinkedList；HashSet，TreeSet）
 * @date :2018年3月10日上午11:28:29
 */
public class ListAndSetAndQueue {
	/**
	 * <h1>Collection:</h1>
	 * 	<p>1.List<E>:<i>有序，可重复</i>
	 * 		1.1.ArrayList<E>:<i>底层的数据结构使用的是数组结构。特点：查询速度很快。但是增删稍慢。线程不同步</i>
	 * 		1.2.LinkedList<E>:<i>底层使用的链表数据结构。特点：增删速度很快，查询稍慢。线程不同步</i>
	 * 		1.3.Vector<E>:<i>底层是数组数据结构。特点：线程同步，慢。。被ArrayList替代了。因为效率低。</i>
	 *	</p>
	 * 	<p>2.Set<E>：无序、不可重复
	 * 		2.1.HashSet<E>：底层数据结构是哈希表。是线程不安全的。不同步。
	 * 			HashSet是如何保证元素唯一性的呢？
					是通过元素的两个方法，hashCode和equals来完成。
					如果元素的HashCode值相同，才会判断equals是否为true。
					如果元素的hashcode值不同，不会调用equals。
					对于判断元素是否存在，以及删除等操作，依赖的方法是元素的hashcode和equals方法。
	 * 		2.2.子类的实现类：TreeSet<E>：底层数据结构： 二叉树 （保证元素唯一性的方法是保证compareTo 方法return 0
	 * 	</p>
	 * 	<p>3.Queue<E>:队列
	 * 		3.1.LinkedList
	 *	</p>
	 */
	public static void getListSource(){
		List<String> list = new ArrayList<String>(5);
		list.add("");
		System.out.println(list.size());
		Set<String> set = new HashSet<>();
		Set<String> set1 = new LinkedHashSet<>();
		Set<String> set2 = new TreeSet<>();
		Queue<String> queue = new LinkedList<String>();
		System.out.println(5>>1);
	}
	
	public static void main(String[] args) {
		getListSource();
	}
	
	
	
}
